package com.community.process._1010.service;

import com.community.process._1010.dao.vo.ProcessFoodItemIngredientsVo;
import com.community.process._1010.domains.ProcessFoodItemIngredientsDTO;
import com.oneadds.lowcode.dto.PageListData;

import java.util.List;

/**
 * @Description: 成品菜食材列表
 * @Author: Administrator to Zbs
 * @Date: 2024/9/6 星期五 15:35
 */
public interface ProcessFoodItemIngredientsService {

    /**
     * 菜品食材列表
     * @param dto 菜品食材列表参数
     * @return 菜品食材列表
     */
    PageListData<ProcessFoodItemIngredientsVo> getProcessFoodItemIngredientsVoPageList(ProcessFoodItemIngredientsDTO.FoodItemIngredientsPageSearch dto);

    /**
     * 菜品食材列表
     * @param foodItemId 菜品id
     * @return 菜品食材列表
     */
    List<ProcessFoodItemIngredientsVo> getProcessFoodItemIngredientsVoList(Long foodItemId);

    /**
     * 根据食材id列表获取菜品id列表
     * @param ingredientsIdList 食材id列表
     * @return 菜品id列表
     */
    List<Long> getFoodItemIdListByInIngredientsId(List<Long> ingredientsIdList);

    /**
     * 菜品食材列表
     * @param foodItemIds 菜品id列表
     * @return 菜品食材列表
     */
    List<ProcessFoodItemIngredientsVo> getProcessFoodItemIngredientsVoListByInFoodItemId(List<Long> foodItemIds);

    /**
     * 添加菜品食材
     * @param foodItemId 菜品id
     * @param list 添加菜品食材参数
     */
    void addFoodItemIngredients(Long foodItemId, List<ProcessFoodItemIngredientsDTO.IngredientsFoodItemAdd> list);

    /**
     * 添加菜品食材
     * @param dto 添加菜品食材参数
     */
    void addFoodItemIngredients(ProcessFoodItemIngredientsDTO.FoodItemIngredientsAdd dto);

    /**
     * 更新菜品食材
     * @param dto 更新菜品食材参数
     */
    void updateFoodItemIngredients(ProcessFoodItemIngredientsDTO.FoodItemIngredientsUpdate dto);

    /**
     * 删除菜品食材
     * @param dto 删除菜品食材参数
     */
    void deleteFoodItemIngredients(ProcessFoodItemIngredientsDTO.FoodItemIngredientsDelete dto);

    /**
     * 删除菜品食材
     * @param foodItemId 菜品ID
     */
    void deleteFoodItemIngredients(Long foodItemId);
}
